package com.microtf.inscription.jpa;

import com.microtf.inscription.jpa.entity.BlogCategory;
import com.microtf.inscription.jpa.entity.BlogPost;
import com.microtf.inscription.jpa.entity.BlogSpace;
import com.microtf.inscription.jpa.entity.User;
import org.springframework.data.domain.Page;
import org.springframework.data.domain.Pageable;
import org.springframework.data.jpa.repository.JpaRepository;

import java.util.Collection;
import java.util.List;

/**
 * 博客内容jpa
 *
 * @author guliuzhong
 */
public interface BlogPostJpa extends JpaRepository<BlogPost, Integer> {
    /**
     * 根据分类列出文章
     *
     * @param blogSpace  博客空间
     * @param categories 分类
     * @param pageable   分页
     * @return 分页后的博客内容
     */
    Page<BlogPost> findBlogPostByBlogSpaceAndCategoriesIn(BlogSpace blogSpace, Collection<List<BlogCategory>> categories, Pageable pageable);

    /**
     * 通过博客空间和用户获取post
     * @param blogSpace 博客空间
     * @param user  用户
     * @param pageable 分页排序等
     * @return post列表
     */
    Page<BlogPost> findBlogPostByBlogSpaceAndAuthor(BlogSpace blogSpace, User user, Pageable pageable);
    /**
     * 通过博客空间下用户和分类获取post
     * @param blogSpace 博客空间
     * @param user  用户
     * @param pageable 分页排序等
     * @param blogCategory 分类
     * @return post列表
     */
    Page<BlogPost> findBlogPostByBlogSpaceAndAuthorAndCategories(BlogSpace blogSpace, User user,BlogCategory blogCategory, Pageable pageable);
}
